package com.dsp.week07.conf;

import com.dsp.week07.aop.DataBaseType;

public class DataSourceTypeThreadLocal {

    /**
     * 使用ThreadLocal保证线程安全
     */
    private static final ThreadLocal<DataBaseType> TYPE = new ThreadLocal<>();

    /**
     * 往当前线程里设置数据源类型
     * @param dataBaseType
     */
    public static void setDataBaseType(DataBaseType dataBaseType) {
        if (dataBaseType == null) {
            throw new NullPointerException();
        }
        TYPE.set(dataBaseType);
    }

    /**
     * 获取数据源类型
     * @return
     */
    public static DataBaseType getDataBaseType() {
        return TYPE.get() == null ? DataBaseType.Primary : TYPE.get();
    }

    /**
     * 清空数据类型
     */
    public static void clearDataBaseType() {
        TYPE.remove();
    }
}
